<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>


    // reduce：归并
    // 遍历数组，根据数组的长度，多次执行传入的回调函数
    // 实参1：回调函数接收了四个形参
        // reduce接收了实参2：
            // 形参1：
                // 回调函数第一次执行时，形参1就是reduce的实参2；
                // 之后每次获取上一次回调函数的返回值
            // 形参2：回调函数执行时，本次遍历到的数组中的数据
        // reduce没有实参2：
            // 形参1：
                // 回调函数第一次执行时，形参1是数组中的第一个数据
                // 之后每次获取上一次回调函数的返回值
            // 形参2：回调函数执行时，从数组的第二个数据开始获取
        // 形参3：回调函数本次执行时获取到的数据（形参2）的索引
        // 形参4：正在遍历的数组本身，原数组
    // 实参2：可选，任意数据

    // reduce的返回值：最后一次回调函数的返回值

    // var arr = ["abc", "qwe", "123", "asd"]

    // var result = arr.reduce( function(a, b, c, d){

    //     console.log(a, b, c, d, d === arr);

    // } , "hello" );

    // console.log(result)

    // =========
    
    // var arr = ["abc", "qwe", "123", "asd"]
    // var result = arr.reduce( function(a, b, c, d){
    //     return a + "-" + b;
    // } , "hello" );

    // var arr = [3, 4, 5, 6, 7];
    // var result = arr.reduce( function(a, b, c, d){
    //     return a + b;
    // } );

    // var arr = [3, 4, 5, 6, 7];
    // var result = arr.reduce( function(a, b, c, d){
    //     return a + b;
    // }, 0 );

    // var arr = [{price:10},{price:30},{price:15},{price:25}];
    // var result = arr.reduce( function(a, b, c, d){
    //     return a + b.price;
    // }, 0 );

    // console.log(result);

    
</script>
</html>